
// jQuery实现电梯导航
$(function () {
    var posArr = [];
    $.each($('.jiadian'), function (i, ele) {
        posArr[i] = Number($(this).offset().top);
    })
    // 放置每个楼层的offsetTop
    $(window).scroll(function () {
        $.each($('.jiadian'), function (i, ele) {
            if ($(document).scrollTop() >= posArr[i] && ($(document).scrollTop() < posArr[i + 1] || i == posArr.length - 1) && $(document).scrollTop() < $('.footer').offset().top) {
                $('.fixedtool').find('li').removeClass('current');
                $('.fixedtool').find('li').eq(i).addClass('current');
            }
            if ($(document).scrollTop() > $('.footer').offset().top || $(document).scrollTop() < $('.jiadian').eq(0).offset().top) {
                $('.fixedtool').find('li').removeClass('current');
            }
        })
    })
    $.each($('.fixedtool li'), function (i, ele) {
        $(this).click(function () {
            $('body,html').animate({ scrollTop: posArr[i] })
        })
    })

    // goback
    $(window).scroll(function () {
        $('.recom_hd').position().top < $(window).scrollTop() ? $('.goback').fadeIn('fast') : $('.goback').fadeOut('fast');
    })
    $('.goback').click(function(){
        $('body,html').animate({scrollTop:0});
    })
})



// DOM实现轮播图放映
window.addEventListener('load', function () {
    var focus = this.document.querySelector('.focus');
    var arrowl = this.document.querySelector('.arrow-l');
    var arrowr = this.document.querySelector('.arrow-r');
    var ul = focus.querySelector('ul');
    var ol = focus.querySelector('ol');

    var focusWidth = 720;

    // A.左右按钮的显示与隐藏
    // 鼠标经过focus
    focus.addEventListener('mouseenter', function () {
        arrowl.style.display = 'block';
        arrowr.style.display = 'block';
        // 清除定时器
        clearInterval(timer);
        timer = null;   // 释放timer
    })
    // 鼠标离开focus
    focus.addEventListener('mouseleave', function () {
        arrowl.style.display = 'none';
        arrowr.style.display = 'none';
        // 重启定时器
        timer = setInterval(function () {
            // 手动调用点击事件的函数
            arrowr.click();
        }, 2000)
    })

    // B.小圆圈的自动生成
    for (let i = 0; i < ul.children.length; i++) {
        // 1.生成节点
        let li = this.document.createElement('li');
        // 2.插入节点
        ol.appendChild(li);
        // 3.设置当前li的索引号  利用setAttribute设置新的属性值index
        // 等价于在标签中设置 <li index="i"></li>
        li.setAttribute('index', i);
    }
    // 把ol中的第一个li设置背景色
    ol.children[0].className = 'current';

    // C.小圆圈排他思想
    for (let i = 0; i < ol.children.length; i++) {
        ol.children[i].addEventListener('click', function () {
            for (let j = 0; j < ol.children.length; j++) {
                ol.children[j].className = '';
            }
            this.className = 'current';
            // D.点击小圆圈移动图片
            // 获取自定义属性index
            var index = this.getAttribute('index');
            circle = index;
            num = index;
            animate(ul, -index * focusWidth);
        })
    }

    // E.克隆ul的第一个li,并放到ul最后
    // 因为在js代码中,克隆放置在ol自动生成li之后,所以该克隆不会增加小圆圈数量
    const first = ul.children[0].cloneNode(true);
    ul.appendChild(first);

    // 设置两个全局变量用于获取当前是第几个小圆圈 以及ul的第几个li
    var num = 0;
    var circle = 0;
    var flag = true;    // 设置节流阀

    // F.点击左右按钮,图片移动一张,小圆圈跟随变化
    // 右侧按钮点击事件
    arrowr.addEventListener('click', function () {
        if (flag) {
            flag = false;   // 事件发生时关闭节流阀
            if (num == ul.children.length - 1) {
                ul.style.left = 0;
                num = 0;
            }
            // if (circle == ol.children.length - 1) {
            //     circle = 0;
            // } else {
            //     circle++;
            // }
            // 该判断可以直接使用三元表达式,更为简洁
            circle = circle == ol.children.length - 1 ? 0 : ++circle;
            num++;
            animate(ul, -num * focusWidth, function () {
                flag = true;
            });  // 利用动画中的回调函数解锁节流阀,因为动画中的回调函数在事件结束后才会调用
            circleChange();
        }
    })
    // 左侧按钮点击事件
    arrowl.addEventListener('click', function () {
        if (flag) {
            flag = false;
            if (num == 0) {
                num = ul.children.length - 1;
                ul.style.left = -num * focusWidth + 'px';
            }
            circle = circle == 0 ? ol.children.length - 1 : --circle;
            num--;
            animate(ul, -num * focusWidth, function () {
                flag = true;
            });
            circleChange();
        }

    })
    // 小圆圈随按钮变化函数
    function circleChange() {
        // 排他
        for (var i = 0; i < ol.children.length; i++) {
            ol.children[i].className = '';
        }
        // circle作为全局变量,不需要传参
        ol.children[circle].className = 'current';
    }

    // G.自动轮播功能
    var timer = setInterval(function () {
        // 手动调用点击事件的函数
        arrowr.click();
    }, 2000)
})

